package cn.itsource.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.itsource.domain.sys_user;
import cn.itsource.mapper.sys_userMapper;
import cn.itsource.service.ILoginService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Service//将本类业务层交给spring管理
public class ILoginServiceImpl implements ILoginService {
    //注入依赖
    @Autowired
    private sys_userMapper mapper;
    @Override
    public sys_user longin(sys_user user) {
    // 1. 验证前端传过来的数据是否为空
        if(StrUtil.isBlank(user.getUserName())){
            throw new RuntimeException("用户名不能为空");
        }
        if(StrUtil.isBlank(user.getPassword())){
            throw new RuntimeException("密码不能为空");

        }
       // 2. 查询数据库是否存在当前用户
       // 2.1 使用tk的模板进行查询 Example:查询模板
       Example example = new Example(sys_user.class);//查询的那张表
        // 2.2 给模板添加查询条件（注意：这里要使用精确查询而不能使用模糊查询）
        Example.Criteria userName = example.and().andEqualTo("userName", user.getUserName());
       // 2.3 执行查询操作拿到用户信息
        List<sys_user> userList = mapper.selectByExample(example);
       // 2.4 判断登录的用户是否存在
    //    Example example = new Example(sys_user.class);
//        example.and().andEqualTo("userName",user.getUserName());
//        example.and().andEqualTo("userName",user.getUserName());
//         List<sys_user> sys_users = mapper.selectByExample(example);
        if(userList==null || userList.size()==0){
            throw  new RuntimeException("用户信息不存在");

        }
        // 3. 验证用户的密码是否正确
        // 3.1 拿到登录用户的信息
        sys_user sys_user = userList.get(0);
        // 3.2 将前端传过来的用户密码进行MD5加密操作
        String md5 = SecureUtil.md5(user.getPassword());
        // 3.3 判断用户的密码是否正确
        if(!md5.equals(sys_user.getPassword())){
            throw  new RuntimeException("用户密码不正确!!!");

        }
         return sys_user;
    }
}
